﻿#region Copyright (C) 2017-2022 Yaroslav Tatarenko

// Copyright (C) 2017-2022 Yaroslav Tatarenko
// This product uses MediaInfo library, Copyright (c) 2002-2021 MediaArea.net SARL. 
// https://mediaarea.net

#endregion

using System;
using System.Runtime.InteropServices;

namespace MediaInfo
{
  internal static class NativeMethods
  {
    #region Native enumerations and structures

    internal enum Generic
    {
      Generic_Format,
      Generic_Format_String,
      Generic_Format_Info,
      Generic_Format_Url,
      Generic_Format_Commercial,
      Generic_Format_Commercial_IfAny,
      Generic_Format_Version,
      Generic_Format_Profile,
      Generic_Format_Level,
      Generic_Format_Tier,
      Generic_Format_Compression,
      Generic_Format_Settings,
      Generic_Format_AdditionalFeatures,
      Generic_InternetMediaType,
      Generic_CodecID,
      Generic_CodecID_Info,
      Generic_CodecID_Hint,
      Generic_CodecID_Url,
      Generic_CodecID_Description,
      Generic_Codec,
      Generic_Codec_String,
      Generic_Codec_Info,
      Generic_Codec_Url,
      Generic_Codec_CC,
      Generic_Duration,
      Generic_Duration_String,
      Generic_Duration_String1,
      Generic_Duration_String2,
      Generic_Duration_String3,
      Generic_Duration_String4,
      Generic_Duration_String5,
      Generic_Source_Duration,
      Generic_Source_Duration_String,
      Generic_Source_Duration_String1,
      Generic_Source_Duration_String2,
      Generic_Source_Duration_String3,
      Generic_Source_Duration_String4,
      Generic_Source_Duration_String5,
      Generic_BitRate_Mode,
      Generic_BitRate_Mode_String,
      Generic_BitRate,
      Generic_BitRate_String,
      Generic_BitRate_Minimum,
      Generic_BitRate_Minimum_String,
      Generic_BitRate_Nominal,
      Generic_BitRate_Nominal_String,
      Generic_BitRate_Maximum,
      Generic_BitRate_Maximum_String,
      Generic_BitRate_Encoded,
      Generic_BitRate_Encoded_String,
      Generic_FrameRate,
      Generic_FrameRate_String,
      Generic_FrameRate_Num,
      Generic_FrameRate_Den,
      Generic_FrameCount,
      Generic_Source_FrameCount,
      Generic_ColorSpace,
      Generic_ChromaSubsampling,
      Generic_Resolution,
      Generic_Resolution_String,
      Generic_BitDepth,
      Generic_BitDepth_String,
      Generic_Compression_Mode,
      Generic_Compression_Mode_String,
      Generic_Compression_Ratio,
      Generic_Delay,
      Generic_Delay_String,
      Generic_Delay_String1,
      Generic_Delay_String2,
      Generic_Delay_String3,
      Generic_Delay_String4,
      Generic_Delay_String5,
      Generic_Delay_Settings,
      Generic_Delay_DropFrame,
      Generic_Delay_Source,
      Generic_Delay_Source_String,
      Generic_Delay_Original,
      Generic_Delay_Original_String,
      Generic_Delay_Original_String1,
      Generic_Delay_Original_String2,
      Generic_Delay_Original_String3,
      Generic_Delay_Original_String4,
      Generic_Delay_Original_String5,
      Generic_Delay_Original_Settings,
      Generic_Delay_Original_DropFrame,
      Generic_Delay_Original_Source,
      Generic_Video_Delay,
      Generic_Video_Delay_String,
      Generic_Video_Delay_String1,
      Generic_Video_Delay_String2,
      Generic_Video_Delay_String3,
      Generic_Video_Delay_String4,
      Generic_Video_Delay_String5,
      Generic_StreamSize,
      Generic_StreamSize_String,
      Generic_StreamSize_String1,
      Generic_StreamSize_String2,
      Generic_StreamSize_String3,
      Generic_StreamSize_String4,
      Generic_StreamSize_String5,
      Generic_StreamSize_Proportion,
      Generic_Source_StreamSize,
      Generic_Source_StreamSize_String,
      Generic_Source_StreamSize_String1,
      Generic_Source_StreamSize_String2,
      Generic_Source_StreamSize_String3,
      Generic_Source_StreamSize_String4,
      Generic_Source_StreamSize_String5,
      Generic_Source_StreamSize_Proportion,
      Generic_StreamSize_Encoded,
      Generic_StreamSize_Encoded_String,
      Generic_StreamSize_Encoded_String1,
      Generic_StreamSize_Encoded_String2,
      Generic_StreamSize_Encoded_String3,
      Generic_StreamSize_Encoded_String4,
      Generic_StreamSize_Encoded_String5,
      Generic_StreamSize_Encoded_Proportion,
      Generic_Source_StreamSize_Encoded,
      Generic_Source_StreamSize_Encoded_String,
      Generic_Source_StreamSize_Encoded_String1,
      Generic_Source_StreamSize_Encoded_String2,
      Generic_Source_StreamSize_Encoded_String3,
      Generic_Source_StreamSize_Encoded_String4,
      Generic_Source_StreamSize_Encoded_String5,
      Generic_Source_StreamSize_Encoded_Proportion,
      Generic_Language,
      Generic_ServiceName,
      Generic_ServiceProvider,
    }

    //---------------------------------------------------------------------------
    internal enum General
    {
      General_Count,
      General_Status,
      General_StreamCount,
      General_StreamKind,
      General_StreamKind_String,
      General_StreamKindID,
      General_StreamKindPos,
      General_StreamOrder,
      General_FirstPacketOrder,
      General_Inform,
      General_ID,
      General_ID_String,
      General_OriginalSourceMedium_ID,
      General_OriginalSourceMedium_ID_String,
      General_UniqueID,
      General_UniqueID_String,
      General_MenuID,
      General_MenuID_String,
      General_GeneralCount,
      General_VideoCount,
      General_AudioCount,
      General_TextCount,
      General_OtherCount,
      General_ImageCount,
      General_MenuCount,
      General_Video_Format_List,
      General_Video_Format_WithHint_List,
      General_Video_Codec_List,
      General_Video_Language_List,
      General_Audio_Format_List,
      General_Audio_Format_WithHint_List,
      General_Audio_Codec_List,
      General_Audio_Language_List,
      General_Text_Format_List,
      General_Text_Format_WithHint_List,
      General_Text_Codec_List,
      General_Text_Language_List,
      General_Other_Format_List,
      General_Other_Format_WithHint_List,
      General_Other_Codec_List,
      General_Other_Language_List,
      General_Image_Format_List,
      General_Image_Format_WithHint_List,
      General_Image_Codec_List,
      General_Image_Language_List,
      General_Menu_Format_List,
      General_Menu_Format_WithHint_List,
      General_Menu_Codec_List,
      General_Menu_Language_List,
      General_CompleteName,
      General_FolderName,
      General_FileNameExtension,
      General_FileName,
      General_FileExtension,
      General_CompleteName_Last,
      General_FolderName_Last,
      General_FileNameExtension_Last,
      General_FileName_Last,
      General_FileExtension_Last,
      General_Format,
      General_Format_String,
      General_Format_Info,
      General_Format_Url,
      General_Format_Extensions,
      General_Format_Commercial,
      General_Format_Commercial_IfAny,
      General_Format_Version,
      General_Format_Profile,
      General_Format_Level,
      General_Format_Compression,
      General_Format_Settings,
      General_Format_AdditionalFeatures,
      General_InternetMediaType,
      General_CodecID,
      General_CodecID_String,
      General_CodecID_Info,
      General_CodecID_Hint,
      General_CodecID_Url,
      General_CodecID_Description,
      General_CodecID_Version,
      General_CodecID_Compatible,
      General_Interleaved,
      General_Codec,
      General_Codec_String,
      General_Codec_Info,
      General_Codec_Url,
      General_Codec_Extensions,
      General_Codec_Settings,
      General_Codec_Settings_Automatic,
      General_FileSize,
      General_FileSize_String,
      General_FileSize_String1,
      General_FileSize_String2,
      General_FileSize_String3,
      General_FileSize_String4,
      General_Duration,
      General_Duration_String,
      General_Duration_String1,
      General_Duration_String2,
      General_Duration_String3,
      General_Duration_String4,
      General_Duration_String5,
      General_Duration_Start,
      General_Duration_End,
      General_OverallBitRate_Mode,
      General_OverallBitRate_Mode_String,
      General_OverallBitRate,
      General_OverallBitRate_String,
      General_OverallBitRate_Minimum,
      General_OverallBitRate_Minimum_String,
      General_OverallBitRate_Nominal,
      General_OverallBitRate_Nominal_String,
      General_OverallBitRate_Maximum,
      General_OverallBitRate_Maximum_String,
      General_FrameRate,
      General_FrameRate_String,
      General_FrameRate_Num,
      General_FrameRate_Den,
      General_FrameCount,
      General_Delay,
      General_Delay_String,
      General_Delay_String1,
      General_Delay_String2,
      General_Delay_String3,
      General_Delay_String4,
      General_Delay_String5,
      General_Delay_Settings,
      General_Delay_DropFrame,
      General_Delay_Source,
      General_Delay_Source_String,
      General_StreamSize,
      General_StreamSize_String,
      General_StreamSize_String1,
      General_StreamSize_String2,
      General_StreamSize_String3,
      General_StreamSize_String4,
      General_StreamSize_String5,
      General_StreamSize_Proportion,
      General_StreamSize_Demuxed,
      General_StreamSize_Demuxed_String,
      General_StreamSize_Demuxed_String1,
      General_StreamSize_Demuxed_String2,
      General_StreamSize_Demuxed_String3,
      General_StreamSize_Demuxed_String4,
      General_StreamSize_Demuxed_String5,
      General_HeaderSize,
      General_DataSize,
      General_FooterSize,
      General_IsStreamable,
      General_Album_ReplayGain_Gain,
      General_Album_ReplayGain_Gain_String,
      General_Album_ReplayGain_Peak,
      General_Encryption,
      General_Encryption_Format,
      General_Encryption_Length,
      General_Encryption_Method,
      General_Encryption_Mode,
      General_Encryption_Padding,
      General_Encryption_InitializationVector,
      General_UniversalAdID_String,
      General_UniversalAdID_Registry,
      General_UniversalAdID_Value,
      General_Title,
      General_Title_More,
      General_Title_Url,
      General_Domain,
      General_Collection,
      General_Season,
      General_Season_Position,
      General_Season_Position_Total,
      General_Movie,
      General_Movie_More,
      General_Movie_Country,
      General_Movie_Url,
      General_Album,
      General_Album_More,
      General_Album_Sort,
      General_Album_Performer,
      General_Album_Performer_Sort,
      General_Album_Performer_Url,
      General_Comic,
      General_Comic_More,
      General_Comic_Position_Total,
      General_Part,
      General_Part_Position,
      General_Part_Position_Total,
      General_Track,
      General_Track_More,
      General_Track_Url,
      General_Track_Sort,
      General_Track_Position,
      General_Track_Position_Total,
      General_PackageName,
      General_Grouping,
      General_Chapter,
      General_SubTrack,
      General_Original_Album,
      General_Original_Movie,
      General_Original_Part,
      General_Original_Track,
      General_Compilation,
      General_Compilation_String,
      General_Performer,
      General_Performer_Sort,
      General_Performer_Url,
      General_Original_Performer,
      General_Accompaniment,
      General_Composer,
      General_Composer_Nationality,
      General_Composer_Sort,
      General_Arranger,
      General_Lyricist,
      General_Original_Lyricist,
      General_Conductor,
      General_Director,
      General_CoDirector,
      General_AssistantDirector,
      General_DirectorOfPhotography,
      General_SoundEngineer,
      General_ArtDirector,
      General_ProductionDesigner,
      General_Choreographer,
      General_CostumeDesigner,
      General_Actor,
      General_Actor_Character,
      General_WrittenBy,
      General_ScreenplayBy,
      General_EditedBy,
      General_CommissionedBy,
      General_Producer,
      General_CoProducer,
      General_ExecutiveProducer,
      General_MusicBy,
      General_DistributedBy,
      General_OriginalSourceForm_DistributedBy,
      General_MasteredBy,
      General_EncodedBy,
      General_RemixedBy,
      General_ProductionStudio,
      General_ThanksTo,
      General_Publisher,
      General_Publisher_URL,
      General_Label,
      General_Genre,
      General_PodcastCategory,
      General_Mood,
      General_ContentType,
      General_Subject,
      General_Description,
      General_Keywords,
      General_Summary,
      General_Synopsis,
      General_Period,
      General_LawRating,
      General_LawRating_Reason,
      General_ICRA,
      General_Released_Date,
      General_Original_Released_Date,
      General_Recorded_Date,
      General_Encoded_Date,
      General_Tagged_Date,
      General_Written_Date,
      General_Mastered_Date,
      General_File_Created_Date,
      General_File_Created_Date_Local,
      General_File_Modified_Date,
      General_File_Modified_Date_Local,
      General_Recorded_Location,
      General_Written_Location,
      General_Archival_Location,
      General_Encoded_Application,
      General_Encoded_Application_String,
      General_Encoded_Application_CompanyName,
      General_Encoded_Application_Name,
      General_Encoded_Application_Version,
      General_Encoded_Application_Url,
      General_Encoded_Library,
      General_Encoded_Library_String,
      General_Encoded_Library_CompanyName,
      General_Encoded_Library_Name,
      General_Encoded_Library_Version,
      General_Encoded_Library_Date,
      General_Encoded_Library_Settings,
      General_Encoded_OperatingSystem,
      General_Cropped,
      General_Dimensions,
      General_DotsPerInch,
      General_Lightness,
      General_OriginalSourceMedium,
      General_OriginalSourceForm,
      General_OriginalSourceForm_NumColors,
      General_OriginalSourceForm_Name,
      General_OriginalSourceForm_Cropped,
      General_OriginalSourceForm_Sharpness,
      General_Tagged_Application,
      General_BPM,
      General_ISRC,
      General_ISBN,
      General_BarCode,
      General_LCCN,
      General_CatalogNumber,
      General_LabelCode,
      General_Owner,
      General_Copyright,
      General_Copyright_Url,
      General_Producer_Copyright,
      General_TermsOfUse,
      General_ServiceName,
      General_ServiceChannel,
      General_Service_Url,
      General_ServiceProvider,
      General_ServiceProvider_Url,
      General_ServiceType,
      General_NetworkName,
      General_OriginalNetworkName,
      General_Country,
      General_TimeZone,
      General_Cover,
      General_Cover_Description,
      General_Cover_Type,
      General_Cover_Mime,
      General_Cover_Data,
      General_Lyrics,
      General_Comment,
      General_Rating,
      General_Added_Date,
      General_Played_First_Date,
      General_Played_Last_Date,
      General_Played_Count,
      General_EPG_Positions_Begin,
      General_EPG_Positions_End,
    }

    //---------------------------------------------------------------------------
    internal enum Video
    {
      Video_Count,
      Video_Status,
      Video_StreamCount,
      Video_StreamKind,
      Video_StreamKind_String,
      Video_StreamKindID,
      Video_StreamKindPos,
      Video_StreamOrder,
      Video_FirstPacketOrder,
      Video_Inform,
      Video_ID,
      Video_ID_String,
      Video_OriginalSourceMedium_ID,
      Video_OriginalSourceMedium_ID_String,
      Video_UniqueID,
      Video_UniqueID_String,
      Video_MenuID,
      Video_MenuID_String,
      Video_Format,
      Video_Format_String,
      Video_Format_Info,
      Video_Format_Url,
      Video_Format_Commercial,
      Video_Format_Commercial_IfAny,
      Video_Format_Version,
      Video_Format_Profile,
      Video_Format_Level,
      Video_Format_Tier,
      Video_Format_Compression,
      Video_Format_AdditionalFeatures,
      Video_MultiView_BaseProfile,
      Video_MultiView_Count,
      Video_MultiView_Layout,
      Video_HDR_Format,
      Video_HDR_Format_String,
      Video_HDR_Format_Commercial,
      Video_HDR_Format_Version,
      Video_HDR_Format_Profile,
      Video_HDR_Format_Level,
      Video_HDR_Format_Settings,
      Video_HDR_Format_Compatibility,
      Video_Format_Settings,
      Video_Format_Settings_BVOP,
      Video_Format_Settings_BVOP_String,
      Video_Format_Settings_QPel,
      Video_Format_Settings_QPel_String,
      Video_Format_Settings_GMC,
      Video_Format_Settings_GMC_String,
      Video_Format_Settings_Matrix,
      Video_Format_Settings_Matrix_String,
      Video_Format_Settings_Matrix_Data,
      Video_Format_Settings_CABAC,
      Video_Format_Settings_CABAC_String,
      Video_Format_Settings_RefFrames,
      Video_Format_Settings_RefFrames_String,
      Video_Format_Settings_Pulldown,
      Video_Format_Settings_Endianness,
      Video_Format_Settings_Packing,
      Video_Format_Settings_FrameMode,
      Video_Format_Settings_GOP,
      Video_Format_Settings_PictureStructure,
      Video_Format_Settings_Wrapping,
      Video_InternetMediaType,
      Video_MuxingMode,
      Video_CodecID,
      Video_CodecID_String,
      Video_CodecID_Info,
      Video_CodecID_Hint,
      Video_CodecID_Url,
      Video_CodecID_Description,
      Video_Codec,
      Video_Codec_String,
      Video_Codec_Family,
      Video_Codec_Info,
      Video_Codec_Url,
      Video_Codec_CC,
      Video_Codec_Profile,
      Video_Codec_Description,
      Video_Codec_Settings,
      Video_Codec_Settings_PacketBitStream,
      Video_Codec_Settings_BVOP,
      Video_Codec_Settings_QPel,
      Video_Codec_Settings_GMC,
      Video_Codec_Settings_GMC_String,
      Video_Codec_Settings_Matrix,
      Video_Codec_Settings_Matrix_Data,
      Video_Codec_Settings_CABAC,
      Video_Codec_Settings_RefFrames,
      Video_Duration,
      Video_Duration_String,
      Video_Duration_String1,
      Video_Duration_String2,
      Video_Duration_String3,
      Video_Duration_String4,
      Video_Duration_String5,
      Video_Duration_FirstFrame,
      Video_Duration_FirstFrame_String,
      Video_Duration_FirstFrame_String1,
      Video_Duration_FirstFrame_String2,
      Video_Duration_FirstFrame_String3,
      Video_Duration_FirstFrame_String4,
      Video_Duration_FirstFrame_String5,
      Video_Duration_LastFrame,
      Video_Duration_LastFrame_String,
      Video_Duration_LastFrame_String1,
      Video_Duration_LastFrame_String2,
      Video_Duration_LastFrame_String3,
      Video_Duration_LastFrame_String4,
      Video_Duration_LastFrame_String5,
      Video_Source_Duration,
      Video_Source_Duration_String,
      Video_Source_Duration_String1,
      Video_Source_Duration_String2,
      Video_Source_Duration_String3,
      Video_Source_Duration_String4,
      Video_Source_Duration_String5,
      Video_Source_Duration_FirstFrame,
      Video_Source_Duration_FirstFrame_String,
      Video_Source_Duration_FirstFrame_String1,
      Video_Source_Duration_FirstFrame_String2,
      Video_Source_Duration_FirstFrame_String3,
      Video_Source_Duration_FirstFrame_String4,
      Video_Source_Duration_FirstFrame_String5,
      Video_Source_Duration_LastFrame,
      Video_Source_Duration_LastFrame_String,
      Video_Source_Duration_LastFrame_String1,
      Video_Source_Duration_LastFrame_String2,
      Video_Source_Duration_LastFrame_String3,
      Video_Source_Duration_LastFrame_String4,
      Video_Source_Duration_LastFrame_String5,
      Video_BitRate_Mode,
      Video_BitRate_Mode_String,
      Video_BitRate,
      Video_BitRate_String,
      Video_BitRate_Minimum,
      Video_BitRate_Minimum_String,
      Video_BitRate_Nominal,
      Video_BitRate_Nominal_String,
      Video_BitRate_Maximum,
      Video_BitRate_Maximum_String,
      Video_BitRate_Encoded,
      Video_BitRate_Encoded_String,
      Video_Width,
      Video_Width_String,
      Video_Width_Offset,
      Video_Width_Offset_String,
      Video_Width_Original,
      Video_Width_Original_String,
      Video_Width_CleanAperture,
      Video_Width_CleanAperture_String,
      Video_Height,
      Video_Height_String,
      Video_Height_Offset,
      Video_Height_Offset_String,
      Video_Height_Original,
      Video_Height_Original_String,
      Video_Height_CleanAperture,
      Video_Height_CleanAperture_String,
      Video_Stored_Width,
      Video_Stored_Height,
      Video_Sampled_Width,
      Video_Sampled_Height,
      Video_PixelAspectRatio,
      Video_PixelAspectRatio_String,
      Video_PixelAspectRatio_Original,
      Video_PixelAspectRatio_Original_String,
      Video_PixelAspectRatio_CleanAperture,
      Video_PixelAspectRatio_CleanAperture_String,
      Video_DisplayAspectRatio,
      Video_DisplayAspectRatio_String,
      Video_DisplayAspectRatio_Original,
      Video_DisplayAspectRatio_Original_String,
      Video_DisplayAspectRatio_CleanAperture,
      Video_DisplayAspectRatio_CleanAperture_String,
      Video_ActiveFormatDescription,
      Video_ActiveFormatDescription_String,
      Video_ActiveFormatDescription_MuxingMode,
      Video_Rotation,
      Video_Rotation_String,
      Video_FrameRate_Mode,
      Video_FrameRate_Mode_String,
      Video_FrameRate_Mode_Original,
      Video_FrameRate_Mode_Original_String,
      Video_FrameRate,
      Video_FrameRate_String,
      Video_FrameRate_Num,
      Video_FrameRate_Den,
      Video_FrameRate_Minimum,
      Video_FrameRate_Minimum_String,
      Video_FrameRate_Nominal,
      Video_FrameRate_Nominal_String,
      Video_FrameRate_Maximum,
      Video_FrameRate_Maximum_String,
      Video_FrameRate_Original,
      Video_FrameRate_Original_String,
      Video_FrameRate_Original_Num,
      Video_FrameRate_Original_Den,
      Video_FrameRate_Real,
      Video_FrameRate_Real_String,
      Video_FrameCount,
      Video_Source_FrameCount,
      Video_Standard,
      Video_Resolution,
      Video_Resolution_String,
      Video_Colorimetry,
      Video_ColorSpace,
      Video_ChromaSubsampling,
      Video_ChromaSubsampling_String,
      Video_ChromaSubsampling_Position,
      Video_BitDepth,
      Video_BitDepth_String,
      Video_ScanType,
      Video_ScanType_String,
      Video_ScanType_Original,
      Video_ScanType_Original_String,
      Video_ScanType_StoreMethod,
      Video_ScanType_StoreMethod_FieldsPerBlock,
      Video_ScanType_StoreMethod_String,
      Video_ScanOrder,
      Video_ScanOrder_String,
      Video_ScanOrder_Stored,
      Video_ScanOrder_Stored_String,
      Video_ScanOrder_StoredDisplayedInverted,
      Video_ScanOrder_Original,
      Video_ScanOrder_Original_String,
      Video_Interlacement,
      Video_Interlacement_String,
      Video_Compression_Mode,
      Video_Compression_Mode_String,
      Video_Compression_Ratio,
      Video_Bits__Pixel_Frame_,
      Video_Delay,
      Video_Delay_String,
      Video_Delay_String1,
      Video_Delay_String2,
      Video_Delay_String3,
      Video_Delay_String4,
      Video_Delay_String5,
      Video_Delay_Settings,
      Video_Delay_DropFrame,
      Video_Delay_Source,
      Video_Delay_Source_String,
      Video_Delay_Original,
      Video_Delay_Original_String,
      Video_Delay_Original_String1,
      Video_Delay_Original_String2,
      Video_Delay_Original_String3,
      Video_Delay_Original_String4,
      Video_Delay_Original_String5,
      Video_Delay_Original_Settings,
      Video_Delay_Original_DropFrame,
      Video_Delay_Original_Source,
      Video_TimeStamp_FirstFrame,
      Video_TimeStamp_FirstFrame_String,
      Video_TimeStamp_FirstFrame_String1,
      Video_TimeStamp_FirstFrame_String2,
      Video_TimeStamp_FirstFrame_String3,
      Video_TimeStamp_FirstFrame_String4,
      Video_TimeStamp_FirstFrame_String5,
      Video_TimeCode_FirstFrame,
      Video_TimeCode_Settings,
      Video_TimeCode_Source,
      Video_Gop_OpenClosed,
      Video_Gop_OpenClosed_String,
      Video_Gop_OpenClosed_FirstFrame,
      Video_Gop_OpenClosed_FirstFrame_String,
      Video_StreamSize,
      Video_StreamSize_String,
      Video_StreamSize_String1,
      Video_StreamSize_String2,
      Video_StreamSize_String3,
      Video_StreamSize_String4,
      Video_StreamSize_String5,
      Video_StreamSize_Proportion,
      Video_StreamSize_Demuxed,
      Video_StreamSize_Demuxed_String,
      Video_StreamSize_Demuxed_String1,
      Video_StreamSize_Demuxed_String2,
      Video_StreamSize_Demuxed_String3,
      Video_StreamSize_Demuxed_String4,
      Video_StreamSize_Demuxed_String5,
      Video_Source_StreamSize,
      Video_Source_StreamSize_String,
      Video_Source_StreamSize_String1,
      Video_Source_StreamSize_String2,
      Video_Source_StreamSize_String3,
      Video_Source_StreamSize_String4,
      Video_Source_StreamSize_String5,
      Video_Source_StreamSize_Proportion,
      Video_StreamSize_Encoded,
      Video_StreamSize_Encoded_String,
      Video_StreamSize_Encoded_String1,
      Video_StreamSize_Encoded_String2,
      Video_StreamSize_Encoded_String3,
      Video_StreamSize_Encoded_String4,
      Video_StreamSize_Encoded_String5,
      Video_StreamSize_Encoded_Proportion,
      Video_Source_StreamSize_Encoded,
      Video_Source_StreamSize_Encoded_String,
      Video_Source_StreamSize_Encoded_String1,
      Video_Source_StreamSize_Encoded_String2,
      Video_Source_StreamSize_Encoded_String3,
      Video_Source_StreamSize_Encoded_String4,
      Video_Source_StreamSize_Encoded_String5,
      Video_Source_StreamSize_Encoded_Proportion,
      Video_Alignment,
      Video_Alignment_String,
      Video_Title,
      Video_Encoded_Application,
      Video_Encoded_Application_String,
      Video_Encoded_Application_CompanyName,
      Video_Encoded_Application_Name,
      Video_Encoded_Application_Version,
      Video_Encoded_Application_Url,
      Video_Encoded_Library,
      Video_Encoded_Library_String,
      Video_Encoded_Library_CompanyName,
      Video_Encoded_Library_Name,
      Video_Encoded_Library_Version,
      Video_Encoded_Library_Date,
      Video_Encoded_Library_Settings,
      Video_Encoded_OperatingSystem,
      Video_Language,
      Video_Language_String,
      Video_Language_String1,
      Video_Language_String2,
      Video_Language_String3,
      Video_Language_String4,
      Video_Language_More,
      Video_ServiceKind,
      Video_ServiceKind_String,
      Video_Disabled,
      Video_Disabled_String,
      Video_Default,
      Video_Default_String,
      Video_Forced,
      Video_Forced_String,
      Video_AlternateGroup,
      Video_AlternateGroup_String,
      Video_Encoded_Date,
      Video_Tagged_Date,
      Video_Encryption,
      Video_BufferSize,
      Video_colour_description_present,
      Video_colour_description_present_Source,
      Video_colour_description_present_Original,
      Video_colour_description_present_Original_Source,
      Video_colour_range,
      Video_colour_range_Source,
      Video_colour_range_Original,
      Video_colour_range_Original_Source,
      Video_colour_primaries,
      Video_colour_primaries_Source,
      Video_colour_primaries_Original,
      Video_colour_primaries_Original_Source,
      Video_transfer_characteristics,
      Video_transfer_characteristics_Source,
      Video_transfer_characteristics_Original,
      Video_transfer_characteristics_Original_Source,
      Video_matrix_coefficients,
      Video_matrix_coefficients_Source,
      Video_matrix_coefficients_Original,
      Video_matrix_coefficients_Original_Source,
      Video_MasteringDisplay_ColorPrimaries,
      Video_MasteringDisplay_ColorPrimaries_Source,
      Video_MasteringDisplay_ColorPrimaries_Original,
      Video_MasteringDisplay_ColorPrimaries_Original_Source,
      Video_MasteringDisplay_Luminance,
      Video_MasteringDisplay_Luminance_Source,
      Video_MasteringDisplay_Luminance_Original,
      Video_MasteringDisplay_Luminance_Original_Source,
      Video_MaxCLL,
      Video_MaxCLL_Source,
      Video_MaxCLL_Original,
      Video_MaxCLL_Original_Source,
      Video_MaxFALL,
      Video_MaxFALL_Source,
      Video_MaxFALL_Original,
      Video_MaxFALL_Original_Source,
    }

    //---------------------------------------------------------------------------
    internal enum Audio
    {
      Audio_Count,
      Audio_Status,
      Audio_StreamCount,
      Audio_StreamKind,
      Audio_StreamKind_String,
      Audio_StreamKindID,
      Audio_StreamKindPos,
      Audio_StreamOrder,
      Audio_FirstPacketOrder,
      Audio_Inform,
      Audio_ID,
      Audio_ID_String,
      Audio_OriginalSourceMedium_ID,
      Audio_OriginalSourceMedium_ID_String,
      Audio_UniqueID,
      Audio_UniqueID_String,
      Audio_MenuID,
      Audio_MenuID_String,
      Audio_Format,
      Audio_Format_String,
      Audio_Format_Info,
      Audio_Format_Url,
      Audio_Format_Commercial,
      Audio_Format_Commercial_IfAny,
      Audio_Format_Version,
      Audio_Format_Profile,
      Audio_Format_Level,
      Audio_Format_Compression,
      Audio_Format_Settings,
      Audio_Format_Settings_SBR,
      Audio_Format_Settings_SBR_String,
      Audio_Format_Settings_PS,
      Audio_Format_Settings_PS_String,
      Audio_Format_Settings_Mode,
      Audio_Format_Settings_ModeExtension,
      Audio_Format_Settings_Emphasis,
      Audio_Format_Settings_Floor,
      Audio_Format_Settings_Firm,
      Audio_Format_Settings_Endianness,
      Audio_Format_Settings_Sign,
      Audio_Format_Settings_Law,
      Audio_Format_Settings_ITU,
      Audio_Format_Settings_Wrapping,
      Audio_Format_AdditionalFeatures,
      Audio_Matrix_Format,
      Audio_InternetMediaType,
      Audio_MuxingMode,
      Audio_MuxingMode_MoreInfo,
      Audio_CodecID,
      Audio_CodecID_String,
      Audio_CodecID_Info,
      Audio_CodecID_Hint,
      Audio_CodecID_Url,
      Audio_CodecID_Description,
      Audio_Codec,
      Audio_Codec_String,
      Audio_Codec_Family,
      Audio_Codec_Info,
      Audio_Codec_Url,
      Audio_Codec_CC,
      Audio_Codec_Description,
      Audio_Codec_Profile,
      Audio_Codec_Settings,
      Audio_Codec_Settings_Automatic,
      Audio_Codec_Settings_Floor,
      Audio_Codec_Settings_Firm,
      Audio_Codec_Settings_Endianness,
      Audio_Codec_Settings_Sign,
      Audio_Codec_Settings_Law,
      Audio_Codec_Settings_ITU,
      Audio_Duration,
      Audio_Duration_String,
      Audio_Duration_String1,
      Audio_Duration_String2,
      Audio_Duration_String3,
      Audio_Duration_String4,
      Audio_Duration_String5,
      Audio_Duration_FirstFrame,
      Audio_Duration_FirstFrame_String,
      Audio_Duration_FirstFrame_String1,
      Audio_Duration_FirstFrame_String2,
      Audio_Duration_FirstFrame_String3,
      Audio_Duration_FirstFrame_String4,
      Audio_Duration_FirstFrame_String5,
      Audio_Duration_LastFrame,
      Audio_Duration_LastFrame_String,
      Audio_Duration_LastFrame_String1,
      Audio_Duration_LastFrame_String2,
      Audio_Duration_LastFrame_String3,
      Audio_Duration_LastFrame_String4,
      Audio_Duration_LastFrame_String5,
      Audio_Source_Duration,
      Audio_Source_Duration_String,
      Audio_Source_Duration_String1,
      Audio_Source_Duration_String2,
      Audio_Source_Duration_String3,
      Audio_Source_Duration_String4,
      Audio_Source_Duration_String5,
      Audio_Source_Duration_FirstFrame,
      Audio_Source_Duration_FirstFrame_String,
      Audio_Source_Duration_FirstFrame_String1,
      Audio_Source_Duration_FirstFrame_String2,
      Audio_Source_Duration_FirstFrame_String3,
      Audio_Source_Duration_FirstFrame_String4,
      Audio_Source_Duration_FirstFrame_String5,
      Audio_Source_Duration_LastFrame,
      Audio_Source_Duration_LastFrame_String,
      Audio_Source_Duration_LastFrame_String1,
      Audio_Source_Duration_LastFrame_String2,
      Audio_Source_Duration_LastFrame_String3,
      Audio_Source_Duration_LastFrame_String4,
      Audio_Source_Duration_LastFrame_String5,
      Audio_BitRate_Mode,
      Audio_BitRate_Mode_String,
      Audio_BitRate,
      Audio_BitRate_String,
      Audio_BitRate_Minimum,
      Audio_BitRate_Minimum_String,
      Audio_BitRate_Nominal,
      Audio_BitRate_Nominal_String,
      Audio_BitRate_Maximum,
      Audio_BitRate_Maximum_String,
      Audio_BitRate_Encoded,
      Audio_BitRate_Encoded_String,
      Audio_Channel_s_,
      Audio_Channel_s__String,
      Audio_Channel_s__Original,
      Audio_Channel_s__Original_String,
      Audio_Matrix_Channel_s_,
      Audio_Matrix_Channel_s__String,
      Audio_ChannelPositions,
      Audio_ChannelPositions_Original,
      Audio_ChannelPositions_String2,
      Audio_ChannelPositions_Original_String2,
      Audio_Matrix_ChannelPositions,
      Audio_Matrix_ChannelPositions_String2,
      Audio_ChannelLayout,
      Audio_ChannelLayout_Original,
      Audio_ChannelLayoutID,
      Audio_SamplesPerFrame,
      Audio_SamplingRate,
      Audio_SamplingRate_String,
      Audio_SamplingCount,
      Audio_Source_SamplingCount,
      Audio_FrameRate,
      Audio_FrameRate_String,
      Audio_FrameRate_Num,
      Audio_FrameRate_Den,
      Audio_FrameCount,
      Audio_Source_FrameCount,
      Audio_Resolution,
      Audio_Resolution_String,
      Audio_BitDepth,
      Audio_BitDepth_String,
      Audio_BitDepth_Detected,
      Audio_BitDepth_Detected_String,
      Audio_BitDepth_Stored,
      Audio_BitDepth_Stored_String,
      Audio_Compression_Mode,
      Audio_Compression_Mode_String,
      Audio_Compression_Ratio,
      Audio_Delay,
      Audio_Delay_String,
      Audio_Delay_String1,
      Audio_Delay_String2,
      Audio_Delay_String3,
      Audio_Delay_String4,
      Audio_Delay_String5,
      Audio_Delay_Settings,
      Audio_Delay_DropFrame,
      Audio_Delay_Source,
      Audio_Delay_Source_String,
      Audio_Delay_Original,
      Audio_Delay_Original_String,
      Audio_Delay_Original_String1,
      Audio_Delay_Original_String2,
      Audio_Delay_Original_String3,
      Audio_Delay_Original_String4,
      Audio_Delay_Original_String5,
      Audio_Delay_Original_Settings,
      Audio_Delay_Original_DropFrame,
      Audio_Delay_Original_Source,
      Audio_Video_Delay,
      Audio_Video_Delay_String,
      Audio_Video_Delay_String1,
      Audio_Video_Delay_String2,
      Audio_Video_Delay_String3,
      Audio_Video_Delay_String4,
      Audio_Video_Delay_String5,
      Audio_Video0_Delay,
      Audio_Video0_Delay_String,
      Audio_Video0_Delay_String1,
      Audio_Video0_Delay_String2,
      Audio_Video0_Delay_String3,
      Audio_Video0_Delay_String4,
      Audio_Video0_Delay_String5,
      Audio_ReplayGain_Gain,
      Audio_ReplayGain_Gain_String,
      Audio_ReplayGain_Peak,
      Audio_StreamSize,
      Audio_StreamSize_String,
      Audio_StreamSize_String1,
      Audio_StreamSize_String2,
      Audio_StreamSize_String3,
      Audio_StreamSize_String4,
      Audio_StreamSize_String5,
      Audio_StreamSize_Proportion,
      Audio_StreamSize_Demuxed,
      Audio_StreamSize_Demuxed_String,
      Audio_StreamSize_Demuxed_String1,
      Audio_StreamSize_Demuxed_String2,
      Audio_StreamSize_Demuxed_String3,
      Audio_StreamSize_Demuxed_String4,
      Audio_StreamSize_Demuxed_String5,
      Audio_Source_StreamSize,
      Audio_Source_StreamSize_String,
      Audio_Source_StreamSize_String1,
      Audio_Source_StreamSize_String2,
      Audio_Source_StreamSize_String3,
      Audio_Source_StreamSize_String4,
      Audio_Source_StreamSize_String5,
      Audio_Source_StreamSize_Proportion,
      Audio_StreamSize_Encoded,
      Audio_StreamSize_Encoded_String,
      Audio_StreamSize_Encoded_String1,
      Audio_StreamSize_Encoded_String2,
      Audio_StreamSize_Encoded_String3,
      Audio_StreamSize_Encoded_String4,
      Audio_StreamSize_Encoded_String5,
      Audio_StreamSize_Encoded_Proportion,
      Audio_Source_StreamSize_Encoded,
      Audio_Source_StreamSize_Encoded_String,
      Audio_Source_StreamSize_Encoded_String1,
      Audio_Source_StreamSize_Encoded_String2,
      Audio_Source_StreamSize_Encoded_String3,
      Audio_Source_StreamSize_Encoded_String4,
      Audio_Source_StreamSize_Encoded_String5,
      Audio_Source_StreamSize_Encoded_Proportion,
      Audio_Alignment,
      Audio_Alignment_String,
      Audio_Interleave_VideoFrames,
      Audio_Interleave_Duration,
      Audio_Interleave_Duration_String,
      Audio_Interleave_Preload,
      Audio_Interleave_Preload_String,
      Audio_Title,
      Audio_Encoded_Application,
      Audio_Encoded_Application_String,
      Audio_Encoded_Application_CompanyName,
      Audio_Encoded_Application_Name,
      Audio_Encoded_Application_Version,
      Audio_Encoded_Application_Url,
      Audio_Encoded_Library,
      Audio_Encoded_Library_String,
      Audio_Encoded_Library_CompanyName,
      Audio_Encoded_Library_Name,
      Audio_Encoded_Library_Version,
      Audio_Encoded_Library_Date,
      Audio_Encoded_Library_Settings,
      Audio_Encoded_OperatingSystem,
      Audio_Language,
      Audio_Language_String,
      Audio_Language_String1,
      Audio_Language_String2,
      Audio_Language_String3,
      Audio_Language_String4,
      Audio_Language_More,
      Audio_ServiceKind,
      Audio_ServiceKind_String,
      Audio_Disabled,
      Audio_Disabled_String,
      Audio_Default,
      Audio_Default_String,
      Audio_Forced,
      Audio_Forced_String,
      Audio_AlternateGroup,
      Audio_AlternateGroup_String,
      Audio_Encoded_Date,
      Audio_Tagged_Date,
      Audio_Encryption,
    }

    //---------------------------------------------------------------------------
    internal enum Text
    {
      Text_Count,
      Text_Status,
      Text_StreamCount,
      Text_StreamKind,
      Text_StreamKind_String,
      Text_StreamKindID,
      Text_StreamKindPos,
      Text_StreamOrder,
      Text_FirstPacketOrder,
      Text_Inform,
      Text_ID,
      Text_ID_String,
      Text_OriginalSourceMedium_ID,
      Text_OriginalSourceMedium_ID_String,
      Text_UniqueID,
      Text_UniqueID_String,
      Text_MenuID,
      Text_MenuID_String,
      Text_Format,
      Text_Format_String,
      Text_Format_Info,
      Text_Format_Url,
      Text_Format_Commercial,
      Text_Format_Commercial_IfAny,
      Text_Format_Version,
      Text_Format_Profile,
      Text_Format_Compression,
      Text_Format_Settings,
      Text_Format_Settings_Wrapping,
      Text_Format_AdditionalFeatures,
      Text_InternetMediaType,
      Text_MuxingMode,
      Text_MuxingMode_MoreInfo,
      Text_CodecID,
      Text_CodecID_String,
      Text_CodecID_Info,
      Text_CodecID_Hint,
      Text_CodecID_Url,
      Text_CodecID_Description,
      Text_Codec,
      Text_Codec_String,
      Text_Codec_Info,
      Text_Codec_Url,
      Text_Codec_CC,
      Text_Duration,
      Text_Duration_String,
      Text_Duration_String1,
      Text_Duration_String2,
      Text_Duration_String3,
      Text_Duration_String4,
      Text_Duration_String5,
      Text_Duration_FirstFrame,
      Text_Duration_FirstFrame_String,
      Text_Duration_FirstFrame_String1,
      Text_Duration_FirstFrame_String2,
      Text_Duration_FirstFrame_String3,
      Text_Duration_FirstFrame_String4,
      Text_Duration_FirstFrame_String5,
      Text_Duration_LastFrame,
      Text_Duration_LastFrame_String,
      Text_Duration_LastFrame_String1,
      Text_Duration_LastFrame_String2,
      Text_Duration_LastFrame_String3,
      Text_Duration_LastFrame_String4,
      Text_Duration_LastFrame_String5,
      Text_Source_Duration,
      Text_Source_Duration_String,
      Text_Source_Duration_String1,
      Text_Source_Duration_String2,
      Text_Source_Duration_String3,
      Text_Source_Duration_String4,
      Text_Source_Duration_String5,
      Text_Source_Duration_FirstFrame,
      Text_Source_Duration_FirstFrame_String,
      Text_Source_Duration_FirstFrame_String1,
      Text_Source_Duration_FirstFrame_String2,
      Text_Source_Duration_FirstFrame_String3,
      Text_Source_Duration_FirstFrame_String4,
      Text_Source_Duration_FirstFrame_String5,
      Text_Source_Duration_LastFrame,
      Text_Source_Duration_LastFrame_String,
      Text_Source_Duration_LastFrame_String1,
      Text_Source_Duration_LastFrame_String2,
      Text_Source_Duration_LastFrame_String3,
      Text_Source_Duration_LastFrame_String4,
      Text_Source_Duration_LastFrame_String5,
      Text_BitRate_Mode,
      Text_BitRate_Mode_String,
      Text_BitRate,
      Text_BitRate_String,
      Text_BitRate_Minimum,
      Text_BitRate_Minimum_String,
      Text_BitRate_Nominal,
      Text_BitRate_Nominal_String,
      Text_BitRate_Maximum,
      Text_BitRate_Maximum_String,
      Text_BitRate_Encoded,
      Text_BitRate_Encoded_String,
      Text_Width,
      Text_Width_String,
      Text_Height,
      Text_Height_String,
      Text_FrameRate_Mode,
      Text_FrameRate_Mode_String,
      Text_FrameRate,
      Text_FrameRate_String,
      Text_FrameRate_Num,
      Text_FrameRate_Den,
      Text_FrameRate_Minimum,
      Text_FrameRate_Minimum_String,
      Text_FrameRate_Nominal,
      Text_FrameRate_Nominal_String,
      Text_FrameRate_Maximum,
      Text_FrameRate_Maximum_String,
      Text_FrameRate_Original,
      Text_FrameRate_Original_String,
      Text_FrameCount,
      Text_ElementCount,
      Text_Source_FrameCount,
      Text_ColorSpace,
      Text_ChromaSubsampling,
      Text_Resolution,
      Text_Resolution_String,
      Text_BitDepth,
      Text_BitDepth_String,
      Text_Compression_Mode,
      Text_Compression_Mode_String,
      Text_Compression_Ratio,
      Text_Delay,
      Text_Delay_String,
      Text_Delay_String1,
      Text_Delay_String2,
      Text_Delay_String3,
      Text_Delay_String4,
      Text_Delay_String5,
      Text_Delay_Settings,
      Text_Delay_DropFrame,
      Text_Delay_Source,
      Text_Delay_Source_String,
      Text_Delay_Original,
      Text_Delay_Original_String,
      Text_Delay_Original_String1,
      Text_Delay_Original_String2,
      Text_Delay_Original_String3,
      Text_Delay_Original_String4,
      Text_Delay_Original_String5,
      Text_Delay_Original_Settings,
      Text_Delay_Original_DropFrame,
      Text_Delay_Original_Source,
      Text_Video_Delay,
      Text_Video_Delay_String,
      Text_Video_Delay_String1,
      Text_Video_Delay_String2,
      Text_Video_Delay_String3,
      Text_Video_Delay_String4,
      Text_Video_Delay_String5,
      Text_Video0_Delay,
      Text_Video0_Delay_String,
      Text_Video0_Delay_String1,
      Text_Video0_Delay_String2,
      Text_Video0_Delay_String3,
      Text_Video0_Delay_String4,
      Text_Video0_Delay_String5,
      Text_StreamSize,
      Text_StreamSize_String,
      Text_StreamSize_String1,
      Text_StreamSize_String2,
      Text_StreamSize_String3,
      Text_StreamSize_String4,
      Text_StreamSize_String5,
      Text_StreamSize_Proportion,
      Text_StreamSize_Demuxed,
      Text_StreamSize_Demuxed_String,
      Text_StreamSize_Demuxed_String1,
      Text_StreamSize_Demuxed_String2,
      Text_StreamSize_Demuxed_String3,
      Text_StreamSize_Demuxed_String4,
      Text_StreamSize_Demuxed_String5,
      Text_Source_StreamSize,
      Text_Source_StreamSize_String,
      Text_Source_StreamSize_String1,
      Text_Source_StreamSize_String2,
      Text_Source_StreamSize_String3,
      Text_Source_StreamSize_String4,
      Text_Source_StreamSize_String5,
      Text_Source_StreamSize_Proportion,
      Text_StreamSize_Encoded,
      Text_StreamSize_Encoded_String,
      Text_StreamSize_Encoded_String1,
      Text_StreamSize_Encoded_String2,
      Text_StreamSize_Encoded_String3,
      Text_StreamSize_Encoded_String4,
      Text_StreamSize_Encoded_String5,
      Text_StreamSize_Encoded_Proportion,
      Text_Source_StreamSize_Encoded,
      Text_Source_StreamSize_Encoded_String,
      Text_Source_StreamSize_Encoded_String1,
      Text_Source_StreamSize_Encoded_String2,
      Text_Source_StreamSize_Encoded_String3,
      Text_Source_StreamSize_Encoded_String4,
      Text_Source_StreamSize_Encoded_String5,
      Text_Source_StreamSize_Encoded_Proportion,
      Text_Title,
      Text_Encoded_Application,
      Text_Encoded_Application_String,
      Text_Encoded_Application_CompanyName,
      Text_Encoded_Application_Name,
      Text_Encoded_Application_Version,
      Text_Encoded_Application_Url,
      Text_Encoded_Library,
      Text_Encoded_Library_String,
      Text_Encoded_Library_CompanyName,
      Text_Encoded_Library_Name,
      Text_Encoded_Library_Version,
      Text_Encoded_Library_Date,
      Text_Encoded_Library_Settings,
      Text_Encoded_OperatingSystem,
      Text_Language,
      Text_Language_String,
      Text_Language_String1,
      Text_Language_String2,
      Text_Language_String3,
      Text_Language_String4,
      Text_Language_More,
      Text_ServiceKind,
      Text_ServiceKind_String,
      Text_Disabled,
      Text_Disabled_String,
      Text_Default,
      Text_Default_String,
      Text_Forced,
      Text_Forced_String,
      Text_AlternateGroup,
      Text_AlternateGroup_String,
      Text_Summary,
      Text_Encoded_Date,
      Text_Tagged_Date,
      Text_Encryption,
    }

    //---------------------------------------------------------------------------
    internal enum Other
    {
      Other_Count,
      Other_Status,
      Other_StreamCount,
      Other_StreamKind,
      Other_StreamKind_String,
      Other_StreamKindID,
      Other_StreamKindPos,
      Other_StreamOrder,
      Other_FirstPacketOrder,
      Other_Inform,
      Other_ID,
      Other_ID_String,
      Other_OriginalSourceMedium_ID,
      Other_OriginalSourceMedium_ID_String,
      Other_UniqueID,
      Other_UniqueID_String,
      Other_MenuID,
      Other_MenuID_String,
      Other_Type,
      Other_Format,
      Other_Format_String,
      Other_Format_Info,
      Other_Format_Url,
      Other_Format_Commercial,
      Other_Format_Commercial_IfAny,
      Other_Format_Version,
      Other_Format_Profile,
      Other_Format_Compression,
      Other_Format_Settings,
      Other_Format_AdditionalFeatures,
      Other_MuxingMode,
      Other_CodecID,
      Other_CodecID_String,
      Other_CodecID_Info,
      Other_CodecID_Hint,
      Other_CodecID_Url,
      Other_CodecID_Description,
      Other_Duration,
      Other_Duration_String,
      Other_Duration_String1,
      Other_Duration_String2,
      Other_Duration_String3,
      Other_Duration_String4,
      Other_Duration_String5,
      Other_Duration_Start,
      Other_Duration_End,
      Other_Source_Duration,
      Other_Source_Duration_String,
      Other_Source_Duration_String1,
      Other_Source_Duration_String2,
      Other_Source_Duration_String3,
      Other_Source_Duration_String4,
      Other_Source_Duration_String5,
      Other_Source_Duration_FirstFrame,
      Other_Source_Duration_FirstFrame_String,
      Other_Source_Duration_FirstFrame_String1,
      Other_Source_Duration_FirstFrame_String2,
      Other_Source_Duration_FirstFrame_String3,
      Other_Source_Duration_FirstFrame_String4,
      Other_Source_Duration_FirstFrame_String5,
      Other_Source_Duration_LastFrame,
      Other_Source_Duration_LastFrame_String,
      Other_Source_Duration_LastFrame_String1,
      Other_Source_Duration_LastFrame_String2,
      Other_Source_Duration_LastFrame_String3,
      Other_Source_Duration_LastFrame_String4,
      Other_Source_Duration_LastFrame_String5,
      Other_BitRate_Mode,
      Other_BitRate_Mode_String,
      Other_BitRate,
      Other_BitRate_String,
      Other_BitRate_Minimum,
      Other_BitRate_Minimum_String,
      Other_BitRate_Nominal,
      Other_BitRate_Nominal_String,
      Other_BitRate_Maximum,
      Other_BitRate_Maximum_String,
      Other_BitRate_Encoded,
      Other_BitRate_Encoded_String,
      Other_FrameRate,
      Other_FrameRate_String,
      Other_FrameRate_Num,
      Other_FrameRate_Den,
      Other_FrameCount,
      Other_Source_FrameCount,
      Other_Delay,
      Other_Delay_String,
      Other_Delay_String1,
      Other_Delay_String2,
      Other_Delay_String3,
      Other_Delay_String4,
      Other_Delay_String5,
      Other_Delay_Settings,
      Other_Delay_DropFrame,
      Other_Delay_Source,
      Other_Delay_Source_String,
      Other_Delay_Original,
      Other_Delay_Original_String,
      Other_Delay_Original_String1,
      Other_Delay_Original_String2,
      Other_Delay_Original_String3,
      Other_Delay_Original_String4,
      Other_Delay_Original_String5,
      Other_Delay_Original_Settings,
      Other_Delay_Original_DropFrame,
      Other_Delay_Original_Source,
      Other_Video_Delay,
      Other_Video_Delay_String,
      Other_Video_Delay_String1,
      Other_Video_Delay_String2,
      Other_Video_Delay_String3,
      Other_Video_Delay_String4,
      Other_Video_Delay_String5,
      Other_Video0_Delay,
      Other_Video0_Delay_String,
      Other_Video0_Delay_String1,
      Other_Video0_Delay_String2,
      Other_Video0_Delay_String3,
      Other_Video0_Delay_String4,
      Other_Video0_Delay_String5,
      Other_TimeStamp_FirstFrame,
      Other_TimeStamp_FirstFrame_String,
      Other_TimeStamp_FirstFrame_String1,
      Other_TimeStamp_FirstFrame_String2,
      Other_TimeStamp_FirstFrame_String3,
      Other_TimeStamp_FirstFrame_String4,
      Other_TimeStamp_FirstFrame_String5,
      Other_TimeCode_FirstFrame,
      Other_TimeCode_Settings,
      Other_TimeCode_Striped,
      Other_TimeCode_Striped_String,
      Other_StreamSize,
      Other_StreamSize_String,
      Other_StreamSize_String1,
      Other_StreamSize_String2,
      Other_StreamSize_String3,
      Other_StreamSize_String4,
      Other_StreamSize_String5,
      Other_StreamSize_Proportion,
      Other_StreamSize_Demuxed,
      Other_StreamSize_Demuxed_String,
      Other_StreamSize_Demuxed_String1,
      Other_StreamSize_Demuxed_String2,
      Other_StreamSize_Demuxed_String3,
      Other_StreamSize_Demuxed_String4,
      Other_StreamSize_Demuxed_String5,
      Other_Source_StreamSize,
      Other_Source_StreamSize_String,
      Other_Source_StreamSize_String1,
      Other_Source_StreamSize_String2,
      Other_Source_StreamSize_String3,
      Other_Source_StreamSize_String4,
      Other_Source_StreamSize_String5,
      Other_Source_StreamSize_Proportion,
      Other_StreamSize_Encoded,
      Other_StreamSize_Encoded_String,
      Other_StreamSize_Encoded_String1,
      Other_StreamSize_Encoded_String2,
      Other_StreamSize_Encoded_String3,
      Other_StreamSize_Encoded_String4,
      Other_StreamSize_Encoded_String5,
      Other_StreamSize_Encoded_Proportion,
      Other_Source_StreamSize_Encoded,
      Other_Source_StreamSize_Encoded_String,
      Other_Source_StreamSize_Encoded_String1,
      Other_Source_StreamSize_Encoded_String2,
      Other_Source_StreamSize_Encoded_String3,
      Other_Source_StreamSize_Encoded_String4,
      Other_Source_StreamSize_Encoded_String5,
      Other_Source_StreamSize_Encoded_Proportion,
      Other_Title,
      Other_Language,
      Other_Language_String,
      Other_Language_String1,
      Other_Language_String2,
      Other_Language_String3,
      Other_Language_String4,
      Other_Language_More,
      Other_ServiceKind,
      Other_ServiceKind_String,
      Other_Disabled,
      Other_Disabled_String,
      Other_Default,
      Other_Default_String,
      Other_Forced,
      Other_Forced_String,
      Other_AlternateGroup,
      Other_AlternateGroup_String,
    }

    //---------------------------------------------------------------------------
    internal enum Image
    {
      Image_Count,
      Image_Status,
      Image_StreamCount,
      Image_StreamKind,
      Image_StreamKind_String,
      Image_StreamKindID,
      Image_StreamKindPos,
      Image_StreamOrder,
      Image_FirstPacketOrder,
      Image_Inform,
      Image_ID,
      Image_ID_String,
      Image_OriginalSourceMedium_ID,
      Image_OriginalSourceMedium_ID_String,
      Image_UniqueID,
      Image_UniqueID_String,
      Image_MenuID,
      Image_MenuID_String,
      Image_Title,
      Image_Format,
      Image_Format_String,
      Image_Format_Info,
      Image_Format_Url,
      Image_Format_Commercial,
      Image_Format_Commercial_IfAny,
      Image_Format_Version,
      Image_Format_Profile,
      Image_Format_Settings_Endianness,
      Image_Format_Settings_Packing,
      Image_Format_Compression,
      Image_Format_Settings,
      Image_Format_Settings_Wrapping,
      Image_Format_AdditionalFeatures,
      Image_InternetMediaType,
      Image_CodecID,
      Image_CodecID_String,
      Image_CodecID_Info,
      Image_CodecID_Hint,
      Image_CodecID_Url,
      Image_CodecID_Description,
      Image_Codec,
      Image_Codec_String,
      Image_Codec_Family,
      Image_Codec_Info,
      Image_Codec_Url,
      Image_Width,
      Image_Width_String,
      Image_Width_Offset,
      Image_Width_Offset_String,
      Image_Width_Original,
      Image_Width_Original_String,
      Image_Height,
      Image_Height_String,
      Image_Height_Offset,
      Image_Height_Offset_String,
      Image_Height_Original,
      Image_Height_Original_String,
      Image_PixelAspectRatio,
      Image_PixelAspectRatio_String,
      Image_PixelAspectRatio_Original,
      Image_PixelAspectRatio_Original_String,
      Image_DisplayAspectRatio,
      Image_DisplayAspectRatio_String,
      Image_DisplayAspectRatio_Original,
      Image_DisplayAspectRatio_Original_String,
      Image_ColorSpace,
      Image_ChromaSubsampling,
      Image_Resolution,
      Image_Resolution_String,
      Image_BitDepth,
      Image_BitDepth_String,
      Image_Compression_Mode,
      Image_Compression_Mode_String,
      Image_Compression_Ratio,
      Image_StreamSize,
      Image_StreamSize_String,
      Image_StreamSize_String1,
      Image_StreamSize_String2,
      Image_StreamSize_String3,
      Image_StreamSize_String4,
      Image_StreamSize_String5,
      Image_StreamSize_Proportion,
      Image_StreamSize_Demuxed,
      Image_StreamSize_Demuxed_String,
      Image_StreamSize_Demuxed_String1,
      Image_StreamSize_Demuxed_String2,
      Image_StreamSize_Demuxed_String3,
      Image_StreamSize_Demuxed_String4,
      Image_StreamSize_Demuxed_String5,
      Image_Encoded_Library,
      Image_Encoded_Library_String,
      Image_Encoded_Library_Name,
      Image_Encoded_Library_Version,
      Image_Encoded_Library_Date,
      Image_Encoded_Library_Settings,
      Image_Language,
      Image_Language_String,
      Image_Language_String1,
      Image_Language_String2,
      Image_Language_String3,
      Image_Language_String4,
      Image_Language_More,
      Image_ServiceKind,
      Image_ServiceKind_String,
      Image_Disabled,
      Image_Disabled_String,
      Image_Default,
      Image_Default_String,
      Image_Forced,
      Image_Forced_String,
      Image_AlternateGroup,
      Image_AlternateGroup_String,
      Image_Summary,
      Image_Encoded_Date,
      Image_Tagged_Date,
      Image_Encryption,
      Image_colour_description_present,
      Image_colour_primaries,
      Image_transfer_characteristics,
      Image_matrix_coefficients,
      Image_colour_description_present_Original,
      Image_colour_primaries_Original,
      Image_transfer_characteristics_Original,
      Image_matrix_coefficients_Original,
    }

    //---------------------------------------------------------------------------
    internal enum Menu
    {
      Menu_Count,
      Menu_Status,
      Menu_StreamCount,
      Menu_StreamKind,
      Menu_StreamKind_String,
      Menu_StreamKindID,
      Menu_StreamKindPos,
      Menu_StreamOrder,
      Menu_FirstPacketOrder,
      Menu_Inform,
      Menu_ID,
      Menu_ID_String,
      Menu_OriginalSourceMedium_ID,
      Menu_OriginalSourceMedium_ID_String,
      Menu_UniqueID,
      Menu_UniqueID_String,
      Menu_MenuID,
      Menu_MenuID_String,
      Menu_Format,
      Menu_Format_String,
      Menu_Format_Info,
      Menu_Format_Url,
      Menu_Format_Commercial,
      Menu_Format_Commercial_IfAny,
      Menu_Format_Version,
      Menu_Format_Profile,
      Menu_Format_Compression,
      Menu_Format_Settings,
      Menu_Format_AdditionalFeatures,
      Menu_CodecID,
      Menu_CodecID_String,
      Menu_CodecID_Info,
      Menu_CodecID_Hint,
      Menu_CodecID_Url,
      Menu_CodecID_Description,
      Menu_Codec,
      Menu_Codec_String,
      Menu_Codec_Info,
      Menu_Codec_Url,
      Menu_Duration,
      Menu_Duration_String,
      Menu_Duration_String1,
      Menu_Duration_String2,
      Menu_Duration_String3,
      Menu_Duration_String4,
      Menu_Duration_String5,
      Menu_Duration_Start,
      Menu_Duration_End,
      Menu_Delay,
      Menu_Delay_String,
      Menu_Delay_String1,
      Menu_Delay_String2,
      Menu_Delay_String3,
      Menu_Delay_String4,
      Menu_Delay_String5,
      Menu_Delay_Settings,
      Menu_Delay_DropFrame,
      Menu_Delay_Source,
      Menu_List_StreamKind,
      Menu_List_StreamPos,
      Menu_List,
      Menu_List_String,
      Menu_Title,
      Menu_Language,
      Menu_Language_String,
      Menu_Language_String1,
      Menu_Language_String2,
      Menu_Language_String3,
      Menu_Language_String4,
      Menu_Language_More,
      Menu_ServiceKind,
      Menu_ServiceKind_String,
      Menu_ServiceName,
      Menu_ServiceChannel,
      Menu_Service_Url,
      Menu_ServiceProvider,
      Menu_ServiceProvider_Url,
      Menu_ServiceType,
      Menu_NetworkName,
      Menu_Original_NetworkName,
      Menu_Countries,
      Menu_TimeZones,
      Menu_LawRating,
      Menu_LawRating_Reason,
      Menu_Disabled,
      Menu_Disabled_String,
      Menu_Default,
      Menu_Default_String,
      Menu_Forced,
      Menu_Forced_String,
      Menu_AlternateGroup,
      Menu_AlternateGroup_String,
      Menu_Chapters_Pos_Begin,
      Menu_Chapters_Pos_End,
    }

    public enum Status
    {
      None = 0x00,
      Accepted = 0x01,
      Filled = 0x02,
      Updated = 0x04,
      Finalized = 0x08,
    }

    [Flags]
    internal enum LoadLibraryFlags : uint
    {
      None = 0x00000000,
      DONT_RESOLVE_DLL_REFERENCES = 0x00000001,
      LOAD_LIBRARY_AS_DATAFILE = 0x00000002,
      LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008,
      LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010,
      LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x00000020,
      LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x00000040,
      LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x00000100,
      LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x00000200,
      LOAD_LIBRARY_SEARCH_USER_DIRS = 0x00000400,
      LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800,
      LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x00001000,
    }

    #endregion

#if NET40 || NET45

    [DllImport("kernel32.dll", SetLastError = true)]
    internal static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hReservedNull, LoadLibraryFlags dwFlags);

    [DllImport("kernel32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    internal static extern bool FreeLibrary(IntPtr hModule);

    [DllImport("kernel32.dll")]
    internal static extern long GetDriveType(string driveLetter);

#endif

    //Import of DLL functions. DO NOT USE until you know what you do (MediaInfo DLL do NOT use CoTaskMemAlloc to allocate memory)
#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_New();

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern void MediaInfo_Delete(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Open(IntPtr handle, [MarshalAs(UnmanagedType.LPWStr)] string fileName);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Open(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)] string fileName);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Open_Buffer_Init(IntPtr handle, long fileSize, long fileOffset);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Open(IntPtr handle, long fileSize, long fileOffset);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Open_Buffer_Continue(IntPtr handle, IntPtr buffer, IntPtr bufferSize);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal unsafe static extern IntPtr MediaInfo_Open_Buffer_Continue(IntPtr handle, byte* buffer, IntPtr bufferSize);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Open_Buffer_Continue(
      IntPtr handle,
      long fileSize,
      byte[] buffer,
      IntPtr bufferSize);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern long MediaInfo_Open_Buffer_Continue_GoTo_Get(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern long MediaInfoA_Open_Buffer_Continue_GoTo_Get(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Open_Buffer_Finalize(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Open_Buffer_Finalize(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern void MediaInfo_Close(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Inform(IntPtr handle, IntPtr reserved);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Inform(IntPtr handle, IntPtr reserved);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_GetI(
      IntPtr handle,
      IntPtr streamKind,
      IntPtr streamNumber,
      IntPtr parameter,
      IntPtr kindOfInfo);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_GetI(
      IntPtr handle,
      IntPtr streamKind,
      IntPtr streamNumber,
      IntPtr parameter,
      IntPtr kindOfInfo);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Get(
      IntPtr handle,
      IntPtr streamKind,
      IntPtr streamNumber,
      [MarshalAs(UnmanagedType.LPWStr)] string parameter,
      IntPtr kindOfInfo,
      IntPtr kindOfSearch);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Get(
      IntPtr handle,
      IntPtr streamKind,
      IntPtr streamNumber,
      [MarshalAs(UnmanagedType.LPStr)] string parameter,
      IntPtr kindOfInfo,
      IntPtr kindOfSearch);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Option(
      IntPtr handle,
      [MarshalAs(UnmanagedType.LPWStr)] string option,
      [MarshalAs(UnmanagedType.LPWStr)] string value);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoA_Option(
      IntPtr handle,
      [MarshalAs(UnmanagedType.LPStr)] string option,
      [MarshalAs(UnmanagedType.LPStr)] string value);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_State_Get(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfo_Count_Get(IntPtr handle, IntPtr streamKind, IntPtr streamNumber);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_New();

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern void MediaInfoList_Delete(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_Open(
      IntPtr handle,
      [MarshalAs(UnmanagedType.LPWStr)] string fileName,
      IntPtr options);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoListA_Open(
      IntPtr handle,
      [MarshalAs(UnmanagedType.LPStr)] string fileName,
      IntPtr options);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern void MediaInfoList_Close(IntPtr handle, IntPtr filePos);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_Inform(IntPtr handle, IntPtr filePos, IntPtr reserved);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoListA_Inform(IntPtr handle, IntPtr filePos, IntPtr reserved);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_GetI(
      IntPtr handle,
      IntPtr filePos,
      IntPtr streamKind,
      IntPtr streamNumber,
      IntPtr parameter,
      IntPtr kindOfInfo);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoListA_GetI(
      IntPtr handle,
      IntPtr filePos,
      IntPtr streamKind,
      IntPtr streamNumber,
      IntPtr parameter,
      IntPtr kindOfInfo);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_Get(
      IntPtr handle,
      IntPtr filePos,
      IntPtr streamKind,
      IntPtr streamNumber,
      [MarshalAs(UnmanagedType.LPWStr)] string parameter,
      IntPtr kindOfInfo,
      IntPtr kindOfSearch);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoListA_Get(
      IntPtr handle,
      IntPtr filePos,
      IntPtr streamKind,
      IntPtr streamNumber,
      [MarshalAs(UnmanagedType.LPStr)] string parameter,
      IntPtr kindOfInfo,
      IntPtr kindOfSearch);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_Option(
      IntPtr handle,
      [MarshalAs(UnmanagedType.LPWStr)] string option,
      [MarshalAs(UnmanagedType.LPWStr)] string value);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoListA_Option(
      IntPtr handle,
      [MarshalAs(UnmanagedType.LPStr)] string option,
      [MarshalAs(UnmanagedType.LPStr)] string value);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_State_Get(IntPtr handle);

#if NET40 || NET45
    [DllImport("MediaInfo.dll")]
#else
    [DllImport("libmediainfo")]
#endif
    internal static extern IntPtr MediaInfoList_Count_Get(
      IntPtr handle,
      IntPtr filePos,
      IntPtr streamKind,
      IntPtr streamNumber);
  }
}